
<template>
  <div>
      <!-- van-nav-bar是组件运行后替换成真正的标签 -->
   <van-nav-bar title="黑马头条登录"/>
   <van-form @submit="onSubmit">
  <van-field
    v-model="formLogin.mobile"
    label="手机号码"
    required
    placeholder="请输入手机号"
    :rules="[{ required: true, message: '请输入正确的手机号',trigger:'onChange',pattern:/^1[3-9]\d{9}$/}]"
  />
  <van-field
    v-model="formLogin.code"
    type="password"
    name="登录密码"
        required
    label="请输入密码"
    placeholder="密码"
    :rules="[{ required: true, message: '请填写密码' ,trigger:'onChange',pattern:/^\d{6}$/}]"
  />
  <div style="margin: 16px;">
    <van-button round block type="info" native-type="submit" :loading="isLoading" :disabled="isLoading"  loading-text="加载中..."
>提交</van-button>
  </div>
</van-form>
  </div>
</template>

<script>
// 2.接口按需导入===========================
import { loginAPI } from '@/api'
import { Notify } from 'vant'
import { mapMutations } from 'vuex'
export default {
// 样式复制进来后声明变量
  data () {
    return {
      formLogin: {
        // 这两个名字针对于api接口里的
        mobile: '13888888888',
        code: '246810'// 后台只能用这个登录
      },
      isLoading: false

    }
  },
  methods: {
    ...mapMutations(['setToken', 'setRefreshToken']),
    //   点击登录获取手机号和密码
    async onSubmit () {
      this.isLoading = true// 加载效果
      //   console.log(this.username)
      //   console.log(this.password)
      // 推荐
      try {
        const res = await loginAPI(this.formLogin)
        // 形参
        this.setToken(res.data.data.token)
        this.setRefreshToken(res.data.data.refresh_token)

        console.log(res)
        this.isLoading = false
        Notify({ type: 'success', message: '登录成功' })
        // 跳转到layout----------------
        this.$router.push({
          path: '/layout'
        })
      } catch (error) {
        console.log(error)
        this.isLoading = false
        Notify({ type: 'warning', message: '登录失败' })
      }
    }
  }

}
</script>

<style lang="less" scoped>//（scoped防止类名重复，为了区分作用域）要这些类名只作用于当前文件
// 表头样式继承的优先级较低，是在父级上设置的，标签自己有的话继承不了
// .van-nav-bar{
//     background-color:#007bff;
// }

// 知识点1.组件内的标签不会被scoped影响添加data-v属性
// 知识点2.如果选择组件内的标签，要用、deep/后代选择器
// /deep/.van-nav-bar__title{
//     color: rgb(228, 227, 236);
// }
</style>
